﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
//
using System.Collections.Generic;



   public partial class CtrlHerramientas : System.Web.UI.UserControl
   {

      protected void Page_Load ( object sender, EventArgs e )
      {
         InicializaElementos();
      }
      /// <summary>
      /// Metodo que asigna memoria a los componentes del controlador
      /// </summary>
      public void InicializaElementos ()
      {
         _oculto = true;
         _porDefecto = true;
         _numOperaciones = 0;
         if (_operaciones == null)
         {
            _operaciones = new List<String>();
         }
      }
      /// <summary>
      /// Método de puesta a cero en el estado del controlador
      /// </summary>
      public void Resetea ()
      {
         _operaciones.Clear();
         _numOperaciones = 0;
         _oculto = true;
         _porDefecto = true;
      }
      /// <summary>
      /// Metodo de actualización , redibujado , del controlador
      /// </summary>
      /// <returns></returns>
      public void Actualiza ()
      {
         // Fuerza el refresco de los contenidos de la pagina.
      }
      /// <summary>
      /// Metodo asociado a el cambio de funcionalidad cuando se pincha el boton de aparecer desaparecer
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      public void Redimension ( object sender, EventArgs e )
      {
         if (_oculto)
         {
            this.idBarraHerramientas.Visible = false;
            //this.idBarraHerramientas.Style.Width = 1;
            _oculto = false;
         }
         else
         {
            this.idBarraHerramientas.Visible = true;
            //this.idBarraHerramientas.Style.Width = 100;
            _oculto = true;
         }
      }
      /// <summary>
      /// 
      /// </summary>
      /// <param name="otra"></param>
      public void setOpciones ( List<String> otra )
      {
         // faltan comprobaciones
         _operaciones.AddRange(otra);
      }
      /// <summary>
      /// Establecemos la lista de opciones disponibles para mostrar en el controlador
      /// Comforme avance la aplicación la opciones deberan de ser una clave valor con, Titulo de opcion y url 
      /// de respuesta asociada, rollo servlet total, salvo que haya algun metodo mejor en .net
      /// </summary>
      /// <param name="parametro"></param>
      /// <param name="numero"></param>
      public void setOpciones ( List<String> parametro, int numero )
      {
         /* 
          * Comprobaciones tipicas serían
          * numero > 0 
          * numero == parametro.count();
          */
         _numOperaciones = numero;
         for (int i = 0; i < _numOperaciones; i++)
         {
            if (!_operaciones.Contains(parametro[i].ToString()))
            {
               _operaciones.Add(parametro[i].ToString());
            }
         }
      }
      /// <summary>
      /// Metodo que procesa la accion en funcion de su caption
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      protected void ProcesaAccionTools ( object sender, EventArgs e )
      {
         ;
      }
      /// <summary>
      /// Devuelve una opcion en concreto
      /// </summary>
      /// 
      public String getOperacion ( int indice )
      {
         if (_operaciones != null)
         {
            if ((indice < _operaciones.Count) && (indice >= 0))
               return _operaciones.ElementAt(indice);
         }
         return "";


      }
      /// <summary>
      /// Devuelve el numero de operaciones
      /// </summary>
      /// 
      public int getNumOperaciones ()
      {
         return _numOperaciones;
      }
      /// <summary>
      /// Getter que permite saber si el contenido del controlador herramientas ha sido especificado
      /// </summary>
      /// <returns></returns>
      public bool esPorDefecto ()
      {
         return _porDefecto;
      }
      /// <summary>
      /// Setter que permite especificar si se ha hecho un tratamiento de el valor por defecto
      /// </summary>
      public void setEstaOculto ( bool param )
      {
         _oculto = param;
      }
      /// <summary>
      /// 
      /// </summary>
      public bool estaOculto ()
      {
         return _oculto;
      }
      /// <summary>
      /// 
      /// </summary>
      /// <param name="param"></param>
      public void setEsPorDefecto ( bool param )
      {
         _porDefecto = param;
      }
      private bool _porDefecto;
      private bool _oculto;
      private int _numOperaciones;
      private List<String> _operaciones;
   }


